# -*- coding: utf-8 -*-
# 如果你的程序（包括注释）中包含中文，请加上上面这一行，用于指明编码（utf-8）。
# #号开头的行都是注释。

# 如何编辑本程序：
#     用任何文本编辑器均可编辑。

# 如何运行本程序：
#     在终端中，运行：python p502_inherit.py
#

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
        
    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()
        
    def read_odometer(self):
        print('This car has ' + str(self.odometer_reading) + ' miles.')
        
    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")
            
    def increment_odometer(self, miles):
        self.odometer_reading += miles


class ElectricCar(Car):
    def __init__(self, make, model, year):
        # 初始化父类的属性：
        super().__init__(make, model, year)
        # 子类独有的属性：
        self.battery_size = 70
        
    # 如果父类的方法不适用于子类，可在子类中重写父类的方法。
    def get_descriptive_name(self):
        # 调用父类的同名方法：
        long_name = super().get_descriptive_name()
        return long_name + ' with ' + str(self.battery_size) + '-kwh Battery'
        
        
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

# 注：属性也可以是另一个类的实例。比如：
# 定义Battery类，并使ElectricCar的一个属性为Battery的一个实例。











